Convertir Image a byte[]

Juankar
25 de Marzo del 2003
Hola, me gustaría convertir un objeto Image a un array de byte, ya que quiero meter la imagen en una base de datos. ¿Alguien sabe como hacerlo?
Muchas gracias

Luis
25 de Marzo del 2003
Hi Juankar.
Te mando los trozos de codigo tanto para cargar una array de Byte para guardarlo en base de datos (Oracle) como sacar la imagen de la base de datos y ponerla en un label.
Para cargar una imagen como array de byte.
byte[] image = null;
File file = new File("\imagen.jpg");
FileInputStream in = new FileInputStream(file);
BufferedInputStream reader = new BufferedInputStream(in);
int length = reader.available();
image = new byte[length];
reader.read(image, 0, length);
reader.close();
// PARA METERLA EN UN LABEL
//jLabel1.setIcon(new ImageIcon(image));

Para sacar una imagen de una BD.
PreparedStatement pstmt = null;
ResultSet rs = null;
ImageIcon ii = null;
int valor = 1;
lSql="SELECT imagen FROM imagenes WHERE ( codigo_imagen = ?)";
pstmt = sqlca.getConnection().prepareStatement(lSql);
pstmt.setInt(1,valor);
rs = pstmt.executeQuery();
try{
if(rs.next()){
byte[] a = rs.getBytes(1);
ii = new ImageIcon(a);
}
jLabel1.setIcon(ii);

}catch(Exception es){
System.out.println("Error. "+es);
}


Un saludo y espero esto te sirva. Si algo te falla mandame un correo y lo miro.


juankar
25 de Marzo del 2003
Muchas gracias por todo, pero yo tengo la imagen en un objeto Image (o ImageIcon) y me gustaría convertirla en un array de bytes para después meterla en la base de datos (mi base de datos es mysql pero eso ahora da lo mismo).
Puedo hacer lo que me dices que es guardar la imagen como un fichero y después leerla, pero puedo convertir directamente la imagen (que la tengo en memoria en un objeto Image) en un array de bytes u otro objeto para meterlo en la base de datos?

Bueno, pues muchas gracias y un saludo.